package Day17.Recursion.Demo02;

/**
 * @author hyhWTX
 * @version 1.0
 * @ClassName Demo01Recursion
 * @date 2022年08月30日 21:06
 * @Description: 递归
 */

/**
 *递归的使用间提:
 * 当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归
 */

public class  Demo01Recursion {
    public static void main(String[] args) {
//        a();
        b(1);
    }


//递归一定要有条件限定，保证递归能够停止下来，否则会发生栈内存溢出。
    private static void a() {
        System.out.println("a方法！");
        a();

//        java.lang.StackOverflowError。栈溢出异常
    }

//    在递归中虽然有限定条件，但是递归次数不能太多。否则也会发生栈内存溢出。
    private static void b(int i) {
        System.out.println(i);
        if (i==20000){
            return;
        }
        b(++i);
    }

    /**
     * 构造方法,禁止递归
     *
     *  直接编译报错：构造方法是创建对象使用的,一直递归会导致内存中有无数多个对象,直接编译报错
     *
     *
     */

   public Demo01Recursion() {
//        Demo01Recursion();
   }
}
